﻿Public Class MultiMeta

#Region "Roberto"

    ''' <summary>
    ''' Agregar una meta a la base de datos.
    ''' </summary>
    ''' <param name="p_codigoEmpleado">Codigo del empleado.</param>
    ''' <param name="p_descripcion">Descripcion.</param>
    ''' <param name="p_fechaInicio">Fecha de inicio</param>
    ''' <param name="p_fechaEsperada">Fecha Esperada</param>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 14/06/2010</remarks>
    Public Shared Sub agregar(ByVal p_codigoEmpleado As String, ByVal p_descripcion As String, ByVal p_fechaInicio As Date, _
                               ByVal p_fechaEsperada As Date)

        Dim pars(4) As AccesoDatos.Parametro

        Dim sql As String = "INSERT INTO t_meta VALUES (codigo_empleado, descripcion, fecha_inicio, fecha_esperada, null, eliminado)"
        pars(0) = New AccesoDatos.Parametro("codigo_empleado", p_codigoEmpleado)
        pars(1) = New AccesoDatos.Parametro("descripcion", p_descripcion)
        pars(2) = New AccesoDatos.Parametro("fecha_inicio", p_fechaInicio)
        pars(3) = New AccesoDatos.Parametro("fecha_esperada", p_fechaEsperada)
        pars(4) = New AccesoDatos.Parametro("eliminado", 0)

        Try
            g_access.ejecutarSQL(sql, pars)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    ''' <summary>
    ''' Consulta las metas por codigo de meta.
    ''' </summary>
    ''' <param name="p_codigo">Codigo de la meta.</param>
    ''' <returns>Meta</returns>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 14/06/2010 Modificado: 19/06/2010</remarks>
    Public Shared Function consultarPorCodigo(ByVal p_codigo As Integer) As Meta

        Dim dr As IDataReader
        Dim pars(0) As AccesoDatos.Parametro

        Dim sql As String = "SELECT * FROM t_meta WHERE codigo = p_codigo"
        pars(0) = New AccesoDatos.Parametro("p_codigo", p_codigo)

        Try
            dr = g_access.ejecutarQuery(sql, pars)
        Catch ex As Exception
            Throw ex
        End Try

        Dim meta = instanciarMeta(dr)

        Return meta
    End Function
    ''' <summary>
    ''' Consulta las metas de un codigo de empleado.
    ''' </summary>
    ''' <param name="p_codigoEmpleado">Codigo de empleado.</param>
    ''' <returns>Lista con las metas de un empleado.</returns>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 14/06/2010 Modificado: 19/06/2010</remarks>
    Public Shared Function consultarPorEmpleado(ByVal p_codigoEmpleado As String) As List(Of Meta)

        Dim dr As IDataReader
        Dim pars(0) As AccesoDatos.Parametro

        Dim sql As String = "SELECT * FROM t_meta WHERE codigo_empleado = p_codigoEmpleado AND eliminado = 0"
        pars(0) = New AccesoDatos.Parametro("p_codigoEmpleado", p_codigoEmpleado)

        Try
            dr = g_access.ejecutarQuery(sql, pars)
        Catch ex As Exception
            Throw ex
        End Try

        Dim listaMetas As New List(Of Meta)

        While dr.Read
            listaMetas.Add(instanciarMeta(dr))
        End While

        Return listaMetas
    End Function

    ''' <summary>
    ''' Modifica los datos de una meta.
    ''' </summary>
    ''' <param name="p_codigo">Codigo de la meta.</param>
    ''' <param name="p_descripcion">Descripcion.</param>
    ''' <param name="p_fechaInicio">Fecha de inicio.</param>
    ''' <param name="p_fechaEsperada">Fecha esperada.</param>
    ''' <param name="p_fechaReal">Fecha Real</param>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 14/06/2010 Modificado: 19/06/2010</remarks>
    Public Shared Sub modificar(ByVal p_codigo As Integer, ByVal p_descripcion As String, ByVal p_fechaInicio As Date, ByVal p_fechaEsperada As Date, ByVal p_fechaReal As Date)
        Dim pars(4) As AccesoDatos.Parametro
        Dim sql As String

        sql = "UPDATE t_meta SET descripcion = p_descripcion, fecha_inicio = p_fechaInicio, fecha_esperada = p_fechaEsperada, " _
                & "fecha_real = p_fechaReal WHERE codigo = p_codigo"

        pars(0) = New AccesoDatos.Parametro("p_codigo", p_codigo)
        pars(1) = New AccesoDatos.Parametro("p_descripcion", p_descripcion)
        pars(2) = New AccesoDatos.Parametro("p_fechaInicio", p_fechaInicio)
        pars(3) = New AccesoDatos.Parametro("p_fechaEsperada", p_fechaEsperada)
        pars(4) = New AccesoDatos.Parametro("p_fechaReal", p_fechaReal)

        g_access.ejecutarSQL(sql, pars)
    End Sub

    ''' <summary>
    ''' Elimina una meta.
    ''' </summary>
    ''' <param name="p_codigo">Codigo de la meta.</param>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 14/06/2010 Modificado: 19/06/2010</remarks>
    Public Shared Sub eliminar(ByVal p_codigo As Integer)
        Dim pars(0) As AccesoDatos.Parametro
        Dim sql As String

        sql = "UPDATE t_meta SET eliminado = 1 WHERE codigo = p_codigo"

        pars(0) = New AccesoDatos.Parametro("p_codigo", p_codigo)

        g_access.ejecutarSQL(sql, pars)
    End Sub

    ''' <summary>
    ''' Instancia una meta.
    ''' </summary>
    ''' <param name="p_dr">Data Reader con los datos de la meta.</param>
    ''' <returns>Meta.</returns>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 14/06/2010 Modificado: 19/06/2010</remarks>
    Public Shared Function instanciarMeta(ByVal p_dr As IDataReader) As Meta
        Dim objMeta As Meta
        Dim codigo As Integer = p_dr.Item("codigo")
        Dim codigoEmpleado As String = p_dr.Item("codigo_empleado")
        Dim descripcion As String = p_dr.Item("descripcion")
        Dim fechaInicio As Date = p_dr.Item("fecha_inicio")
        Dim fechaEsperada As Date = p_dr.Item("fecha_esperada")
        If TypeOf p_dr.Item("fecha_real") Is Date Then
            Dim fechaReal As Date
            fechaReal = p_dr.Item("fecha_real")
            objMeta = New Meta(codigo, codigoEmpleado, descripcion, fechaInicio, fechaEsperada, fechaReal)
        Else
            Dim fechaReal As Date
            fechaReal = New Date(0)
            objMeta = New Meta(codigo, codigoEmpleado, descripcion, fechaInicio, fechaEsperada, fechaReal)
        End If
        Return objMeta
    End Function
#End Region

End Class
